A programmable integrated circuit (IC) refers to a type of device that includes programmable circuitry. An example of a programmable IC is a field programmable gate array (FPGA). An FPGA is characterized by the inclusion of programmable circuit blocks. Examples of programmable circuit blocks include, but are not limited to, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), digital signal processing blocks (DSPs), processors, clock managers, and delay lock loops (DLLs).
Typically, each programmable circuit block includes programmable interconnects and programmable logic (referred to collectively as “programmable circuitry”). Programmable interconnects typically include a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). Programmable logic implements the logic of a user design using programmable elements that may include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable circuitry may be programmed by loading a stream of configuration data into internal configuration memory cells that define how the programmable elements are configured. The configuration data can be read from memory (e.g., from an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA.
Some programmable ICs may be partially reconfigured. Partial reconfiguration refers to a capability in which a region of programmable circuitry of the device is reconfigured by loading different configuration data therein to implement different circuitry in the region than was previously implemented. The region is a portion of the available programmable circuitry on the device. Other portions of programmable circuitry of the device not included in the region may implement circuit design(s) that continue to operate uninterrupted by reconfiguration of the region. Partial reconfiguration allows the programmable IC to implement different circuit designs in a designated region over time while other neighboring and/or surrounding programmable circuitry of the device continues to operate without interruption.